package com.cinemahorairerapido;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.View;
import android.widget.ListView;

import com.cinemahorairerapido.R;
import com.cinemahorairerapido.adapter.CinemaProgramAdapter;
import com.cinemahorairerapido.bean.Movie;

public class MovieShowTimeListFragment extends ListFragment /*
															 * implements
															 * LoaderCallbacks
															 * <Cursor>
															 */{

	// private static final String KEY_CONTENT = "TestFragment:Content";

	private static final String PARAM_DATE = "param_date";

	private static final String PARAM_MOVIES = "param_movies";

	public static MovieShowTimeListFragment newInstance(Date date, List<Movie> movies, Context context) {
		MovieShowTimeListFragment fragment = new MovieShowTimeListFragment();

		fragment.mDate = date;
		fragment.mMovies = movies;
		fragment.mContext = context;

		return fragment;
	}

	private List<Movie> mMovies;

	private Date mDate;

	private Context mContext;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		if ((savedInstanceState != null) && savedInstanceState.containsKey(PARAM_DATE) && //
				savedInstanceState.containsKey(PARAM_MOVIES)) {
			mMovies = (List<Movie>) savedInstanceState.getSerializable(PARAM_MOVIES);
			mDate = (Date) savedInstanceState.getSerializable(PARAM_DATE);
		}
	}

	// @Override
	// public View onCreateView(LayoutInflater inflater, ViewGroup container,
	// Bundle savedInstanceState) {
	// TextView text = new TextView(getActivity());
	// text.setGravity(Gravity.CENTER);
	// // text.setText(mContent);
	// text.setTextSize(20 * getResources().getDisplayMetrics().density);
	// text.setPadding(20, 20, 20, 20);
	//
	// LinearLayout layout = new LinearLayout(getActivity());
	// layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
	// LayoutParams.FILL_PARENT));
	// layout.setGravity(Gravity.CENTER);
	// layout.addView(text);
	//
	// ListView listView = new ListView(getActivity());
	//
	// return layout;
	// }

	@Override
	public void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);
		outState.putSerializable(PARAM_MOVIES, (Serializable) mMovies);
		outState.putSerializable(PARAM_DATE, mDate);
	}

	// // This is the Adapter being used to display the list's data.
	// CinemaProgramAdapter mAdapter;
	//
	// // If non-null, this is the current filter the user has provided.
	// String mCurFilter;

	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		super.onActivityCreated(savedInstanceState);

		// Bundle arguments = this.getArguments();
		// Date date = (Date) arguments.getSerializable(PARAM_DATE);
		// List<Movie> paramMovies = (List<Movie>)
		// arguments.getSerializable(PARAM_MOVIES);

		// Give some text to display if there is no data. In a real
		// application this would come from a resource.
		setEmptyText(getResources().getText(R.string.noshowtime));

		// We have a menu item to show in action bar.
		setHasOptionsMenu(true);

		/*-
		// Create an empty adapter we will use to display the loaded data.
		mAdapter = new SimpleCursorAdapter(getActivity(), android.R.layout.simple_list_item_1, null, new String[] { People.DISPLAY_NAME },
				new int[] { android.R.id.text1 }, 0);
		setListAdapter(mAdapter);
		 */

		// Start out with a progress indicator.
		setListShown(false);

		CinemaProgramAdapter adapter = new CinemaProgramAdapter(mMovies, mDate, getActivity());
		setListAdapter(adapter);

		setListShown(true);

		// Prepare the loader. Either re-connect with an existing one,
		// or start a new one.
		// getLoaderManager().initLoader(0, null, this);
	}

	@Override
	public void onListItemClick(ListView l, View v, int position, long id) {

		super.onListItemClick(l, v, position, id);

		Movie currentMovie = mMovies.get(position);

		Intent i = new Intent(mContext, MovieActivity.class);
		i.putExtra(MovieActivity.MOVIE, currentMovie);
		startActivity(i);

	}

	// @Override
	// public Loader<Cursor> onCreateLoader(int id, Bundle args) {
	// // This is called when a new Loader needs to be created. This
	// // sample only has one Loader, so we don't care about the ID.
	// // First, pick the base URI to use depending on whether we are
	// // currently filtering.
	// Uri baseUri;
	// if (mCurFilter != null) {
	// baseUri = Uri.withAppendedPath(People.CONTENT_FILTER_URI,
	// Uri.encode(mCurFilter));
	// } else {
	// baseUri = People.CONTENT_URI;
	// }
	//
	// // Now create and return a CursorLoader that will take care of
	// // creating a Cursor for the data being displayed.
	// String select = "((" + People.DISPLAY_NAME + " NOTNULL) AND (" +
	// People.DISPLAY_NAME + " != '' ))";
	// return new CursorLoader(getActivity(), baseUri,
	// CONTACTS_SUMMARY_PROJECTION, select, null, People.DISPLAY_NAME +
	// " COLLATE LOCALIZED ASC");
	// }
	//
	// @Override
	// public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
	// // Swap the new cursor in. (The framework will take care of closing
	// // the
	// // old cursor once we return.)
	// mAdapter.swapCursor(data);
	//
	// // The list should now be shown.
	// if (isResumed()) {
	// setListShown(true);
	// } else {
	// setListShownNoAnimation(true);
	// }
	// }
	//
	// @Override
	// public void onLoaderReset(Loader<Cursor> loader) {
	// // This is called when the last Cursor provided to onLoadFinished()
	// // above is about to be closed. We need to make sure we are no
	// // longer using it.
	// mAdapter.swapCursor(null);
	// }

	// @Override
	// public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
	// // Place an action bar item for searching.
	// MenuItem item = menu.add("Search");
	// item.setIcon(android.R.drawable.ic_menu_search);
	// MenuItemCompat.setShowAsAction(item,
	// MenuItemCompat.SHOW_AS_ACTION_ALWAYS |
	// MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
	// View searchView = SearchViewCompat.newSearchView(getActivity());
	// if (searchView != null) {
	// SearchViewCompat.setOnQueryTextListener(searchView, new
	// OnQueryTextListenerCompat() {
	// @Override
	// public boolean onQueryTextChange(String newText) {
	// // Called when the action bar search text has changed.
	// // Update
	// // the search filter, and restart the loader to do a new
	// // query
	// // with this filter.
	// String newFilter = !TextUtils.isEmpty(newText) ? newText : null;
	// // Don't do anything if the filter hasn't actually
	// // changed.
	// // Prevents restarting the loader when restoring state.
	// if (mCurFilter == null && newFilter == null) {
	// return true;
	// }
	// if (mCurFilter != null && mCurFilter.equals(newFilter)) {
	// return true;
	// }
	// mCurFilter = newFilter;
	// getLoaderManager().restartLoader(0, null,
	// CursorLoaderListFragment.this);
	// return true;
	// }
	// });
	// MenuItemCompat.setActionView(item, searchView);
	// }
	// }
	//

	// These are the Contacts rows that we will retrieve.
	// static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {
	// People._ID, People.DISPLAY_NAME, };
	//

}
